package utils

import (
	"baliance.com/gooxml/document"
	"bytes"
	"github.com/ledongthuc/pdf"
	"github.com/tealeg/xlsx"
	"log"
)

// ReadExcelfiles 获取 Excel 文字内容
func ReadExcelfiles(filePath string) (string, error) {
	// 打开 Excel 文件
	xlFile, err := xlsx.OpenFile(filePath)
	if err != nil {
		log.Fatalf("error opening document: %s", err)
	}
	// 遍历工作表
	text := ""
	for _, sheet := range xlFile.Sheets {
		// 遍历行
		for _, row := range sheet.Rows {
			// 遍历单元格
			for _, cell := range row.Cells {
				text += cell.String()
			}
		}
	}
	// 返回拼接好的字符串
	return text, nil
}

// ReadWordfiles 获取 Word .Docx 文字内容
func ReadWordfiles(wordPath string) (pdfText string, err error) {
	/// 打开 Word 文档
	doc, err := document.Open(wordPath)
	if err != nil {
		log.Fatalf("error opening document: %s", err)
	}
	//doc.Paragraphs()得到包含文档所有的段落的切片
	text := ""
	for _, para := range doc.Paragraphs() {
		//run为每个段落相同格式的文字组成的片段
		for _, run := range para.Runs() {
			//fmt.Print(run.Text())
			text += run.Text()
		}
		//fmt.Println()
	}

	// 打印提取的文本
	return text, nil
}

// ReadPdffiles 获取pdf文字内容
func ReadPdffiles(path string) (string, error) {
	f, r, err := pdf.Open(path)
	// remember close file
	defer f.Close()
	if err != nil {
		return "", err
	}
	var buf bytes.Buffer
	b, err := r.GetPlainText()
	if err != nil {
		return "", err
	}
	buf.ReadFrom(b)
	return buf.String(), nil
}

// 从pdf中提取文本信息

//func ReadPDFfiles(pdfPath string) (pdfText string, err error) {
//	// 执行 Python 脚本
//	cmd := exec.Command("python3", "extract_text.py", pdfPath)
//	output, err := cmd.Output()
//	if err != nil {
//		fmt.Printf("执行失败: %s\n", err)
//		return
//	}
//	return string(output), nil
//}
